#ifndef FASYS_LIBS_SUBSCRIBER_ISUBSCRIPTONS_HPP
#define FASYS_LIBS_SUBSCRIBER_ISUBSCRIPTONS_HPP

#include "types.hpp"
#include "subscription_channel.hpp"
#include "message.hpp"
#include <vector>

namespace fasys{

class isubscriber;

struct isubscriptions
{
  typedef std::vector<subscription_channel> channel_list;
  virtual ~isubscriptions() {}
  virtual std::string create( const std::string& key, time_t lifetime,  const channel_list& cl ) = 0;
  virtual void move_messages(const std::string& key, const std::string& uuid, std::list<message>& ml ) = 0 ;
  virtual void subscribe(const std::string& key, const std::string& uuid, isubscriber*) = 0;
  virtual void describe(const std::string& key, const std::string& uuid, isubscriber*) = 0;
};

}

#endif
